package com.example.j2cacje_demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

/**
 * j2cache
 *
 * 两级缓存结构
 * - L1: 进程内缓存 caffeine/ehcache
 * - L2: 集中式缓存 Redis/Memcached
 *
 * 由于大量的缓存读取会导致L2的网络成为整个系统的瓶颈
 * 所以 L1的目标是降低对L2的读取次数
 *
 *
 * j2cache缓存框架主要用于集群环境
 *
 * 单机中可避免重启导致的 ehcache缓存数据丢失
 *
 * 数据读取顺序 : L1 -> L2 -> DB
 *
 *
 * 使用本项目证明单机下,j2cache可以避免重启缓存数据丢失
 * 启动项目，访问地址：http://localhost:9000/cache/getInfos
 * 可以发现redis中已经缓存了数据
 *
 * 重启项目,
 * 由于j2cache的一级缓存(caffeine)是进程级缓存,重启后一级缓存消失
 *
 * 但二级缓存(本例中是Redis)的数据还在
 *
 * 再次访问,通过debug看到程序从redis中获取了缓存数据
 */


@SpringBootApplication
public class J2cacjeDemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(J2cacjeDemoApplication.class, args);
    }

}
